package com.yujiahao.bigdata.rdd.transform

import org.apache.spark.rdd.RDD
import org.apache.spark.{SparkConf, SparkContext}

/**
 * TODO RDD  sample()--抽取算子--从数据集中抽取（采样）不是截取）一部分数据
    一、抽样的方式主要有两种
        1、抽取数据之后，数据不会放回到数据集中（不会出现重复数据）false。
        参数解读：第一个参数表示是否放回；第二个参数表示数据集中每一条数据被抽取的概率
       2、抽取数据之后，数据放回到数据集中（会出现重复数据）true。
        参数解读：第一个参数表示是否放回；第二个参数表示数据集中每一条数据被抽取的预计次数。
        第三条参数表示数据抽取时的随机种子--如果的种子相同，那么抽取数据的随机数是相同的，意味这抽取的数据是一致的
 */

object Spark_RDD_Pper_Transform_Sample {
  def main(args: Array[String]): Unit = {


    //TODO 1、获得连接
    val conf: SparkConf = new SparkConf().setAppName("WordCount").setMaster("local")
    val sc: SparkContext = new SparkContext(conf)

    val rdd: RDD[Int] = sc.makeRDD(Range(0, 9))

    val value: RDD[Int] = rdd.sample(false, 0.5, 11)
    value.collect().foreach(println)

    //TODO 2、关闭连接
    sc.stop()
  }
}